【20年品牌建站】找北京网站建设世界杯压球平台_世界杯压球官网(China)官方网站就选世界杯压球平台_世界杯压球官网(China)官方网站/提供北京网站建设报价/北京网站制作/北京网站设计/网站开发、北京网站建设世界杯压球平台_世界杯压球官网(China)官方网站电话【400-024-1998】有优惠哦!
简体
繁体 简体
我们的服务遍布中国

我们的服务遍布中国
乃至世界

世界杯压球平台_世界杯压球官网(China)官方网站所服务的品牌地域与城市
北京 天津 上海 广州 深圳 香港 厦门 江苏 浙江 山东
重庆 长沙 武汉 成都 西安 宁夏 丽江 青海 云南 乌鲁木齐
黑龙江 内蒙古 河北 ...
世界杯压球平台_世界杯压球官网(China)官方网站服务与合作的全球各地
美国 加拿大 德国 法国 英国 瑞士 意大利 荷兰
印度 日本 韩国 ...

不论你的品牌在何处
我们都可以提供完善的服务与帮助

致电

400-024-1998

《高性能网站建设进阶指南》阅读笔记 2

发布时间:2013-11-22 浏览:377打印字号:

大部分Comet服务器或明显地减少每个线程的资源开销,或者使用微线程或进程。如ErlyComet

大多数使用Comet的Php web应用采用分离式(off-board),Php编写的客户端与使用另一门语言编写的服务端通信。

工具包:Dojo Toolkit 或者 js.io

8.2 Transport Techniques

8.2.1 Polling

每x 毫秒发出一个请求,检查是否有更新

setTimeout(function() {xhrRequest( {"foo" : "bar"})}, 2000);


function xhrRequest(data) {

           var xhr = new XMLHttpRequest();

            xhr.open("get", "http://localhost/foo.php", true);

            xhr.onreadystatechange = function() {

                      if(xhr.readyState == 4) {

                                //

                      }

           };

           xhr.send(null);

}

8.2.2 Long  polling

Polling 可能会浪费http请求,并且消耗宝贵的CPU时间和带宽。即便数据更新间隔时间已知,polling可能会导致服务器端超负荷。服务器端还没有响应上一个数据请求,第2个或者第3个请求接踵而至,对服务器进行狂轰乱炸。


Long polling: 服务器端只有在有可用的新数据时才响应,保持一个所有未响应请求和它们对应连接的大集合。服务端通过: Transfer-Encoding:chunked 或 Connection:close响应来保持这些请求连接。



function longPoll(url, callback) {

         var xhr = new XMLHttpRequest();

         xhr.onreadystatechange == function() {

              if(xhr.readyState ==4) {

                      callback(xhr.responseText);

                      xhr.open('GET', url, true);

                      xhr.send(null);

              }

           }


          xhr.open('POST', url, true);

          xhr.send(null);

}


长连接的为您提:每台Apache服务器大约可以处理10 000个并发连接,而一个运行良好的Comet服务器应该有能力处理超过50 000个并发长连接,这在处理实时应用时是非常可取的。

8.2.3 Forever Frame

打开一个隐藏的Iframe,请求一个基于Http1.1 快编码的文档.

8.2.4 XHR Streaming

function xhrStreaming(url, callback) {

       xhr = new XMLHttpRequest();

       xhr.open('POST', url, true);

       var lastSize;

       if(xhr.readyState > 2 ) {

                    newTextReceived = xhr.responseText.substring(lastSize);

                    lastSize = xhr.responseText.length;

                    callback(newTextReceived);

       }

       if(xhr.readyState == 4) {

                    xhrStreaming(url, callback);

       }

8.2.5 websocket html5

8.3 Corss-Domain

Html5 postMessage

callback polling 

JSONP polling


function callbackPolling(url, callback) {

      var script = document.createElement("script");

      script.type = "text/javascript";

      script.src = url + "callback=callbackPolling.callback");

      callbackPolling.callback = function(data) {

           callbackPolling(url, callback);

           callback(data);

      };

      document.getElementsByTagName("head")[0].appendChild(script);

}


http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/ (八卦:麻球网,被盛大收购)

http://ajaxian.com/archives/jsonp-json-with-padding

http://ajaxpatterns.org/On-Demand_Javascript

8.4.1 Manging connections

FreeBSD/OS X 的 Kqueue

Linux 的 epoll

Windows 的 completions ports


主流语言中一些网络库封装成了一致且跨平台的API

C的libevent java.nio, twisted python


性能优化在不同情况下也大相径庭,比如聊天程序,有许多连接,但在任何一个特定时间内只有一小部分用户在接收信息。通过服务器端的连接共享管理大量闲置连接是有好处的。http://orbited.org 和 willowchat.org 做了深入的优化


实时股票报价监控应用程序,大量的连接不断地更细,很少有闲置连接的存在。Jetty/Lightstreamer/Liberator对这种情况作了优化。

8.4.3 portocols

Comet的连接只允许server -> client 通信或双向通信。

Bayeux Publish-Subscribe(pubsub)模型


随着websocket的兴起和处理百万级用户量的解决方案的出现,其复杂性会逐渐降低。





现在就与世界杯压球平台_世界杯压球官网(China)官方网站客服交流

400-024-1998

您也可进行在线咨询或预约项目顾问
我要预约
在线咨询